home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zk.d64
/
src.environment
< prev
next >
Wrap
Text File
|
2007-03-01
|
4KB
|
224 lines
; >S:SRC.ENVIRONMENT
;PUT "SRC.ENVIRONMENT"
;
;--------------------------------;
; SRC.ENVIRONMENT - A COMAL PKG ;
; ;
; EXTENDING COMAL WITH ;
; PROC STORE(X$) ;
; PROC ACCEPT(REF X$) ;
; FUNC GLOBAL ;
; PROC ZEROGLOBAL ;
; ;
; BY DICK KLINGENS ;
; DUTCH COMAL USERS GROUP ;
; JAN87 ;
;--------------------------------;
;
ORG = $8009
;
GLOBFL = $0055
ENVIR = $C080
;
FALSE = 0
TRUE = 1
DEFPAG = $46
FUNC = $E3
PROC = $70
ENDFNC = $7E
ENDPRC = $7E
REAL = $00
VALUE = $72
REF = $75
STR = $02
;
COPYDN = $C8A2
FNDPAR = $C896
PSHINT = $C9CE
RUNERR = $C9FB
;
COPY1 = $45
COPY2 = COPY1+2
COPY3 = COPY2+2
;
;--------------------------------;
; PACKAGE DEFINITION ;
;--------------------------------;
;
* = ORG
;
.BYT DEFPAG
.WOR END
.WOR SENSE
;
.BYT 11,'ENVIRONMENT'
.WOR TABLE
.WOR SENSE
;
.BYT 0
;
TABLE
;--------------------------------;
; NAME TABLE ;
;--------------------------------;
;
.BYT 5,'STORE'
.WOR HSTOR
.BYT 6,'ACCEPT'
.WOR HACCE
.BYT 6,'GLOBAL'
.WOR HGLOB
.BYT 10,'ZEROGLOBAL'
.WOR HZERO
;
.BYT 0
;
;--------------------------------;
; HEADERS ;
;--------------------------------;
;
HSTOR
.BYT PROC
.WOR CSTOR
.BYT 1
.BYT VALUE+STR
.BYT ENDPRC
;
HACCE
.BYT PROC
.WOR CACCE
.BYT 1
.BYT REF+STR
.BYT ENDPRC
;
HGLOB
.BYT FUNC+REAL
.WOR CGLOB
.BYT 0
.BYT ENDFNC
;
HZERO
.BYT PROC
.WOR CZERO
.BYT 0
.BYT ENDPRC
;
;--------------------------------;
; CODE ;
;--------------------------------;
;
SENSE RTS
;
; --------------- PROC STORE(STR$)
;
CSTOR LDA #1
JSR FNDPAR
LDY #2
LDA (COPY1),Y ;A=LEN
BNE ARGERR
INY
LDA (COPY1),Y
CMP #127 ;LEN<=126
BCS ARGERR
;
LDA #TRUE
STA GLOBFL
;
LDA COPY1 ;COPY
CLC ;FROM
ADC #<2 ;LO/HI
STA COPY1
LDA COPY1+1
ADC #>2
STA COPY1+1
;
LDA #<ENVIR ;COPY
LDY #>ENVIR ;TO
STA COPY2 ;LO/HI
STY COPY2+1
;
LDY #1 ;LENGTH
LDA (COPY1),Y ;HI/LO
CLC
ADC #<2
STA COPY3+1
DEY
LDA (COPY1),Y
ADC #>2
STA COPY3
;
JMP COPYDN
;
; ------------------ ENDPROC STORE
;
; ------------------- FUNC ERRTEXT
;
ARGERR LDX #1
.BYT $2C
NOTVAR LDX #62
JMP RUNERR
;
; ---------------- ENDFUNC ERRTEXT
;
; ---------- PROC ACCEPT(REF STR$)
;
CACCE LDA GLOBFL
AND #1
BEQ NOTVAR
LDA #1
JSR FNDPAR
LDY #1
LDA (COPY1),Y
SEC
SBC ENVIR+1
DEY
LDA (COPY1),Y
SBC ENVIR
BCC ARGERR
;
LDA COPY1 ;COPY
CLC ;TO
ADC #<2
STA COPY2
LDA COPY1+1
ADC #>2
STA COPY2+1
;
LDA #<ENVIR ;COPY
LDY #>ENVIR ;FROM
STA COPY1
STY COPY1+1
;
LDA ENVIR+1 ;LENGTH
CLC
ADC #<2
STA COPY3+1
LDA ENVIR
ADC #>2
STA COPY3
;
JMP COPYDN
;
; ----------------- ENDPROC ACCEPT
;
; -------------------- FUNC GLOBAL
;
CGLOB LDA GLOBFL
AND #1
TAX
LDA #0
JMP PSHINT
;
; ----------------- ENDFUNC GLOBAL
;
; ---------------- PROC ZEROGLOBAL
;
CZERO LDA #FALSE
STA GLOBFL
RTS
;
; ------------- ENDPROC ZEROGLOBAL
;
END .END
;